package com.jy.oms.framework.asyn.task.alarm;

/**
 * 告警服务
 *
 * @author liuquan
 */
public interface ITaskAlarmMessageService {

    /**
     * 告警
     */
    void alarm(AlarmMessage alarmMessage);

    /**
     * 转化消息并告警
     */
    default <T> void alarm(IMessageConvert<T> messageConvert, T msg) {
        if (messageConvert == null || msg == null) {
            return;
        }

        this.alarm(messageConvert.convert(msg));
    }

    /**
     * 消息转化
     */
    interface IMessageConvert<T> {
        AlarmMessage convert(T msg);
    }
}
